﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyHocPhi.Model;
using QuanLyHocPhi.BLL;

namespace QuanLyHocPhi.GUI.TacNghiep
{
    public partial class FormDanhSachSinhVien : FormBaseDialog
    {
        List<SinhVien> ListSinhVien;
        DataTable table;

        public FormDanhSachSinhVien(List<SinhVien> listSinhVien)
        {
            InitializeComponent();
            ListSinhVien = listSinhVien;


        }

        private void FormDanhSachSinhVien_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        void CreateTable()
        {
            table = new DataTable();
            #region Tạo cột cho bảng
            table.Columns.Add("MaSinhVien", type: typeof(string));
            table.Columns.Add("Ho", type: typeof(string));
            table.Columns.Add("Ten", type: typeof(string));
            table.Columns.Add("NgaySinh", type: typeof(string));
            table.Columns.Add("Lop", type: typeof(string));
            table.Columns.Add("Truong", type: typeof(string));
            #endregion
        }

        void LoadData()
        {
            bdsSinhVien.DataSource = null;
            if (ListSinhVien.Count > 0)
            {
                CreateTable();
                Nganh nganh = new Nganh();
                LopChuyenNganh lopCN = new LopChuyenNganh();
                Lop lop = new Lop();
                foreach (var item in ListSinhVien)
                {
                    var row = table.NewRow();
                    row["MaSinhVien"] = item.MaSinhVien;
                    row["Ho"] = item.HoDem;
                    row["Ten"] = item.Ten;
                    row["NgaySinh"] = item.NgaySinh;
                    if (item.MaLoai == (int)LoaiSinhVien.SinhVienKhongChuyen)
                    {
                        //Điền thông tin trường lớp của sinh viên không chuyên tại đây
                        if (lop.MaLop != item.KC_MaLop)
                            lop = BizLopGoc.GetLopIncludeTruongByMaLop(item.KC_MaLop);
                        if (lop != null)
                        {
                            row["Lop"] = lop.TenLop;
                            //var truong = BizTruong.GetTruongByMaTruong(lop.MaTruong);
                            if (lop.Truong != null)
                                row["Truong"] = lop.Truong.TenTruong;
                        }
                    }
                    else
                    {
                        //Điền thông tin ngành và tên khoa Giáo dục thể chất tại đây
                        row["Truong"] = "Khoa giáo dục thể chất";
                        if (!string.IsNullOrEmpty(item.C_MaLopChuyenNganh))
                        {
                            if (lopCN == null || lopCN.MaLopChuyenNganh != item.C_MaLopChuyenNganh)
                            {
                                lopCN = BizLopChuyenNganh.GetLopChuyenNganhByMaLCN(item.C_MaLopChuyenNganh);
                                nganh = null;
                                if (lopCN != null)
                                    nganh = BizChuyenNganh.GetNganhByMaNganh(lopCN.MaChuyenNganh);
                            }
                            if (nganh != null)
                            row["Lop"] = nganh.TenNganh;
                        }
                        
                    }
                    table.Rows.Add(row);
                }
                bdsSinhVien.DataSource = table;
                gridSinhVien.AutoGenerateColumns = false;
                gridSinhVien.AllowUserToAddRows = false;
                gridSinhVien.AllowUserToDeleteRows = false;
                gridSinhVien.ReadOnly = true;
                colTen.DataPropertyName = "Ten";
                colHo.DataPropertyName = "Ho";
                colTruong.DataPropertyName = "Truong";
                colNgaySinh.DataPropertyName = "NgaySinh";
                colLop.DataPropertyName = "Lop";
                colMaSV.DataPropertyName = "MaSinhVien";
            }
            gridSinhVien.DataSource = bdsSinhVien;
        }

        private void gridSinhVien_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
                return;

            if (e.ColumnIndex == 0)
            {
                var maSV = gridSinhVien.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
                FormThuHocPhiSinhVien frm = new FormThuHocPhiSinhVien(maSV.ToString());
                frm.ShowDialog();
            }
        }

        private void txtKey_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtKey.Text.Length <= 0)
            {
                return;
            }
            if (e.KeyChar == 13)
            {
                ListSinhVien = BizSinhVien.GetSinhVienByKeyWord(txtKey.Text);
                if (ListSinhVien.Count==1)
                {
                    FormThuHocPhiSinhVien frm = new FormThuHocPhiSinhVien(ListSinhVien[0].MaSinhVien);
                    frm.ShowDialog();
                }
                else
                {
                    LoadData();
                }
            }
        }

        private void btnSinhVien_Search_Click(object sender, EventArgs e)
        {
            txtKey_KeyPress(sender, new KeyPressEventArgs((char)13));
        }

        private void bntCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtKey_Click(object sender, EventArgs e)
        {

        }
    }
}
